iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
Modern Web

傳承D的意志~ 邁向Django的偉大航道系列 第 12

[Day 12] DRF 人(Django Rest framework)! 我的超人!

  • 分享至 

  • xImage
  •  

嗨大家好,我是Sean! 終於來到Django系列重要的今天!
今天我們來講講Django Rest Framework,簡稱DRF。
DRF有多神呢? 讓我們娓娓道來他的天生神力。
https://ithelp.ithome.com.tw/upload/images/20220927/20151096PBgaRRC9bA.jpg

Django Rest Framework


https://ithelp.ithome.com.tw/upload/images/20220927/20151096WVgAxgliKz.png

https://www.django-rest-framework.org/
根據DRF自己官網的敘述:

Django REST framework is a powerful and flexible toolkit for building Web APIs.

DRF的優點在於:

  1. 可視化的API
  2. 序列化(Serialization)資料
  3. 易客製化的Views
  4. 強大的社群以及套件支援

那麼,我們該怎麼使用DRF呢? 讓我們先從環境安裝講起

Install DRF


首先,在專案裡先開啟我們的虛擬環境,然後輸入指令安裝DRF。

pip install djangorestframework

接著打開settings.py,找到INSTALLED_APPS的部分,在最下方加入rest_framework

INSTALLED_APPS = [
    ...,
    'rest_framework',
]

將settings儲存以後,我們可以來引用rest_framework的套件了!

在此之前,我們先來介紹一下rest_framework中,其中一個重要的功能:serializer。

序列化Serialization


序列化的概念可能為DRF中最重要的概念之一。
那麼,序列化是甚麼?

由於在現今前後端分離的傳統下,前後端的溝通常依賴JSON形式的資料結構來傳遞。
通常來說,我們是無法將物件進行JSON序列化的,而serializer就可以幫助我們做到這件事。

序列化簡單來說,也就是將物件化為JSON形式

並且將物件序列化後,回傳前端,另一方面,serializer也可以幫助我們檢驗,前端傳來後端的資料是否可以通過欄位格式驗證,進一步來說,也可以依照我們客製化的參數來做額外的驗證。

Serializers

回到我們的專案,首先我們先在ironman的資料夾新增一個名為serializers.py的檔案
接著,我們在檔案建立我們的serializer

from rest_framework import serializers
from .models import People

https://ithelp.ithome.com.tw/upload/images/20220927/20151096MjG0628NpF.png

model serializer的寫法是不是與form有點類似阿,同樣的,他們都可以在第二個參數fields裡定義選取那些欄位。

下一步,我們來到views.py的檔案,撰寫有關rest framework的view。
今天我們先寫一個get People資料的api,使用generics.ListAPIView
https://ithelp.ithome.com.tw/upload/images/20220927/20151096CjsNmFcVES.png

然後,依照慣例,我們必須將我們的view寫在urls裡,才能藉由url的路徑啟用。
https://ithelp.ithome.com.tw/upload/images/20220927/20151096berGGwQW93.png

這麼一來,就簡單建立了我們第一個api了,那麼,來看看它的結果吧! 進入api/的路徑查看:
https://ithelp.ithome.com.tw/upload/images/20220927/20151096ufjLhD9W3V.png

上圖就是我們視覺化api,內容便是我們call api會得到的JSON格式的回傳,即是我們People資料模型的list!
不僅可以直觀的看到call api的內容,後續也可以直接透過我們api頁面使用api,並且切換不同method使用

那麼,我們今天的文章就先到此結束!明天我們會繼續介紹一些DRF的用法。
我是Sean,你各位海上的人,我們明天見!
https://ithelp.ithome.com.tw/upload/images/20220927/20151096DK4eC4oo8i.jpg


上一篇
[Day 11] 為什麼你該用Django? 可視化的後台管理頁 Admin page
下一篇
[Day 13] DRF 人(Django Rest framework)! 我的超人(下集)
系列文
傳承D的意志~ 邁向Django的偉大航道30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言